package 滑动窗口And双指针.双指针;

import java.util.Arrays;

/**
 * @author aodre , QQ : 480029069
 * @date 2023/7/10 15:33
 */
public class lc16最接近的三数之和 {




    /*
    还是存在单调性的
    接近 和 sum  之间是存在微妙的单调性的!
     */
    public int solve(int nums[],int target){
        Arrays.sort(nums);
        int ans = 0,min = Integer.MAX_VALUE;
        for(int k = 0;k < nums.length;k++){
            int rest = target - nums[k];
            int l = k + 1,r = nums.length - 1;
            while(l < r){
                int temp = nums[l] + nums[r];
                if(temp <= rest){
                    l++;
                }else{
                    r--;
                }

                if(min > Math.abs(rest - temp)){
                    ans = nums[k] + temp;
                    min = Math.abs(rest - temp);
                }
            }
        }

        return ans;
    }


}
